import Vue from 'vue';
export default {
    /*初始化购物车页面*/
    initCartModuleMsg(state){
        let url = `${Vue.prototype.NW_API_API_LOCALE_VERSION}/shopping/cart/user/${Vue.prototype.userId}/item/list`;
        Vue.prototype.xurl.getSyncLoading(url).then((data) => {
            if (data.success) {
                let sessionCartModuleMsg = window.sessionStorage.getItem('sessionCartModuleMsg') ? JSON.parse(window.sessionStorage.getItem('sessionCartModuleMsg')): {};
                state.cartMoudleMsg = Object.assign({},state.cartMoudleMsg,sessionCartModuleMsg,data.result);
                /*给购物车模型里面加三个字段，一个selectAll，一个selected，一个是否购买*/
                if(state.cartMoudleMsg.cartStoreInfos){
                    state.cartMoudleMsg.cartStoreInfos.forEach((value, index) => {
                        state.cartMoudleMsg.cartStoreInfos[index].selectAll = false;
                        value.cartItemInfos.forEach((cartItemInfosValue, cartItemInfosIndex) => {
                            state.cartMoudleMsg.cartStoreInfos[index].cartItemInfos[cartItemInfosIndex].selected = false;
                        })
                    });
                }
            } else if (data.errMsg) {
                Vue.$toast({message: data.errMsg});
            } else {
                Vue.$toast({message: '购物车信息获取失败，请重新获取'});
            }
            window.sessionStorage.setItem('sessionCartModuleMsg',JSON.stringify(state.cartMoudleMsg));
        })
    },
    /*删除购物车中的商品*/
    deleteCartItem(state,obj){
        let url = `${Vue.prototype.NW_API_API_LOCALE_VERSION}/shopping/cart/user/${Vue.prototype.userId}/delete/${obj.selectItemId}`
        // Vue.prototype.$root.$emit('toast', {msg: '删除商品失败'});
        Vue.prototype.xurl.delete(url).then((data) => {
            if (data.success) {
                if (obj.deleteType == 'invalidStoreInfos') {
                    state.cartMoudleMsg.invalidStoreInfos.forEach((invalidStoreInfosValue, invalidStoreInfosIndex) => {
                        if (obj.storeId == invalidStoreInfosValue.storeId) {
                            invalidStoreInfosValue.invalidItemInfos.forEach((cartItemInfoValue, cartItemInfoIndex) => {
                                if (obj.selectItemId == cartItemInfoValue.id) {
                                    state.cartMoudleMsg.invalidStoreInfos[invalidStoreInfosIndex].invalidItemInfos.splice(cartItemInfoIndex, 1);
                                    if (state.cartMoudleMsg.invalidStoreInfos[invalidStoreInfosIndex].invalidItemInfos.length == 0) {
                                        state.cartMoudleMsg.invalidStoreInfos.splice(invalidStoreInfosIndex, 1);
                                    }
                                }
                            })
                        }
                    })
                }
                if (obj.deleteType == 'cartStoreInfos') {
                    state.cartMoudleMsg.cartStoreInfos.forEach((cartStoreInfoValue, cartStoreInfoIndex) => {
                        if (obj.storeId == cartStoreInfoValue.storeId) {
                            cartStoreInfoValue.cartItemInfos.forEach((cartItemInfoValue, cartItemInfoIndex) => {
                                if (obj.selectItemId == cartItemInfoValue.id) {
                                    state.cartMoudleMsg.cartStoreInfos[cartStoreInfoIndex].cartItemInfos.splice(cartItemInfoIndex, 1);
                                    if (state.cartMoudleMsg.cartStoreInfos[cartStoreInfoIndex].cartItemInfos.length == 0) {
                                        state.cartMoudleMsg.cartStoreInfos.splice(cartStoreInfoIndex, 1);
                                    }
                                }
                            })
                        }
                    })
                }
            } else if (data.errMsg) {
                Vue.$toast({message: data.errMsg});
            } else {
                Vue.$toast({message: '删除商品失败'});
            }
        })
    }
}